package modelo.desplazadores;

import java.lang.Math;

import modelo.util.Vector;

/* Este desplazador realiza un movimiento circular en sentido horario
 * Ademas avanza por la direccion que se le pase. Si se le pasa (0,0) de
 * direccion, simplemente realizara el movimiento circular.
 */

public class DesplazadorCircularAvanzando extends Desplazadores {

        float radio;
        double angBarrido; //Angulo que se recorrera del circulo cada turno. En radianes
        double angRecorrido = 0;
        public int avanzar;
        
        public DesplazadorCircularAvanzando(Vector unaPos, Vector unaDir, float rad,
                        double angTurno, float velocid) {
                /*Nota: La velocidad pasada es del movimiento "no circular"
                        la del recorrido del circulo depende del radio y angulo*/
                        avanzar = 1;
                        velocidad = velocid;
                        posicion = unaPos;
                        direccion = unaDir;
                        radio = rad;
                        angBarrido = angTurno;
        }

        public Vector getSigPos(){
                Vector proxPosicion = posicion.sumar(direccion.multiplicar(velocidad));
                float antX = radio * (float)Math.cos(angRecorrido);
                float antY = radio * (float)Math.sin(angRecorrido);
                proxPosicion = proxPosicion.restar(new Vector(antX,antY));
                angRecorrido = angRecorrido + angBarrido * avanzar;
                float proxX = radio * (float)Math.cos(angRecorrido);
                float proxY = radio * (float)Math.sin(angRecorrido);
                proxPosicion = proxPosicion.sumar(new Vector(proxX,proxY));
                return proxPosicion;
        }

        public void setRadio(float rad){
                radio = rad;
        }
        
    	//Cambia el movimiento del desplazador para que retroceda
    	public void retroceder(){
    		direccion = direccion.rotar(Math.PI);
    		avanzar = -1;
    	}
        
                
}

